Busses or communications subsystems include both electrical/electro-magnetic interfaces and programming interfaces. Devices that comply with a particular bus's interfaces include hardware, firmware and software combinations along with state and/or data storage for configuration purposes and communication of control signals and/or data, typically with a device driver written specifically for the device and complying with the bus's software interface to provide a host machine with control of, and access to the device. The device drivers may be identified with one or more of a particular device ID (identifier) and version, a vendor ID, a sub-vendor ID and a sub-device ID. A (Peripheral Component Interconnect) PCI Express® Base Specification, Rev. 3.0, section 7.5.1, is available online at pcisig.com/members/downloads/specifications/pciexpress/ in PDF (portable document format) format as PCI_Express_Base_r3.0—10Nov10.pdf for additional information.
Forward compatibility or upward compatibility in the context of this disclosure is the ability of a hardware-software interface or system to work gracefully with later versions of itself or newer devices that are not yet designed. A forward compatible technology implies that an interface designed for older devices can function as expected with new devices.
Virtualization in the context of this disclosure refers to virtualized device drivers, virtualized hardware devices, or virtual functions. For example, it may be that several Ethernet devices share a single physical link through virtualized interfaces. Thus, a virtualization technology may provide a mechanism of presenting a set of logical computing and/or communication resources over a hardware configuration so that these logical resources can be accessed in the same manner as the original hardware configuration. Hardware resources that can be virtualized may include computer systems, storage, networks, cryptographic resources, graphics resources, audio resources, television resources or others.
Examples of hardware virtualization technology include the KVM (Kernel-based Virtual Machine) for Linux based systems; Hypervisors, VSPs (Virtualization Service Providers), VSCs (Virtualization Service Clients) and VM (Virtual Machine) worker processes for Windows® based systems; the Xen hypervisor for Windows and Linux based virtual servers; and System z virtualization for systems based on IBM's z/OS (Operating System), z/VSE (Virtual Storage Extended) or z/TPF (Transaction Processing Facility), Linux on System z, and for the z/VM hypervisor. Some of these technologies may employ messaging techniques such as sockets, switches, message channels and mail-boxes which may permit virtual drivers that are aware of the virtualization, or some may require extensive infrastructures, hypervisors, and/or emulators. As such, prior art techniques may not provide enough flexibility to design virtualized device drivers, virtualized hardware devices, or virtual functions with an interface, that while designed for current devices, can function as expected with new devices as they become available.
To date, potential solutions to such virtualizable and forward-compatible device hardware-software interfaces have not been adequately explored.